package com.novelot.plugin.gradle

import com.android.build.gradle.AppExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.Copy
import org.gradle.api.tasks.StopExecutionException

/**
 * 给build.gradle使用,用<Project>
 */
class FirstBuildPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        //println("工程")
        //println(project.childProjects)
        project.task("firstBuildTask") {
            group 'novelot'
            description '第一个build gradle插件'
            doFirst {
                println("这是第一个build gradle插件")
            }
        }

        project.task("secondBuildTask") {
            group 'novelot'
            description '第二个build gradle插件,依赖firstBuildTask'
            dependsOn("firstBuildTask")
            doFirst {
                println("这是第二个build gradle插件")
            }
        }

        project.task("childProjects") {
            group 'novelot'
            description '打印子工程'

            doFirst {
                println("打印子工程")
                project.childProjects.each {
                    println("${it.key},${it.value}")
                }
            }
        }

        project.task("setAndroidVersionName") {
            //asType(Copy.class)
            group 'novelot'
            description 'setAndroidVersionName'
            enabled = true//启动
            if (false) {
                //抛出异常,后续task不会被执行
                throw new StopExecutionException("stop")
            }
            onlyIf {
                //根据build文件中的属性判断是否执行
                true
            }

            project.extensions.findByName('android').with {
                getProperty('defaultConfig').with {
                    String versionName = getProperty('versionName')
                    println(versionName)
                    setProperty('versionName', '1.0.2')
                }
            }
        }

        (project.extensions.findByName('android') as AppExtension).with {
            defaultConfig{
                applicationId "com.novelot.k"
            }
        }


    }
}
